package com.tyk.bookstore.back.system.service;

import com.tyk.bookstore.back.system.model.dto.UserInfoDto;
import com.tyk.bookstore.back.system.model.dto.RoleDto;
import com.tyk.bookstore.back.system.model.dto.RouteDto;
import com.tyk.bookstore.back.system.model.dto.User4LoginCheckDto;
import com.tyk.bookstore.back.system.model.query.ExistsPrincipalQuery;
import com.tyk.bookstore.back.system.model.query.UpdateUserInfoQuery;
import com.tyk.bookstore.back.system.model.query.User4LoginCheckQuery;

import java.util.List;

public interface UserApiService {

    /**
     * 根据认证主体查询用户的ID、密码、状态、是否为根管理员等信息
     */
    User4LoginCheckDto selectUserByPrincipal(User4LoginCheckQuery query);

    /**
     * 判断该认证主体是否存在
     */
    Boolean existsPrincipal(ExistsPrincipalQuery existsPrincipalQuery);

    /**
     * 根据用户ID查询（角色ID、角色字符串）列表
     *
     * @param userId 用户ID
     */
    List<RoleDto> selectRoleDtoList(Long userId);

    /**
     * 根据角色ID列表查询权限字符串列表
     *
     * @param roleIdList 角色ID列表
     */
    List<String> selectPermissionList(List<Long> roleIdList);

    /**
     * 根据用户ID查询用户已拥有的菜单列表
     *
     * @param userId 用户ID
     */
    List<RouteDto> selectRouteDtoList(Long userId);

    /**
     * 查询用户信息
     */
    UserInfoDto selectUserInfoVo(Long loginId);

    /**
     * 修改用户信息
     */
    void updateUserInfo(UpdateUserInfoQuery query);

    /**
     * 根据用户ID查询密码
     */
    String selectPasswordById(Long loginId);
}
